bitkeeper revision 1.1563 (4295e70c6gPBeUtVURfaYnxTU_GbrA)
authorakw27@arcadians.cl.cam.ac.uk <akw27@arcadians.cl.cam.ac.uk>
Thu, 26 May 2005 15:11:08 +0000 (15:11 +0000)
committerakw27@arcadians.cl.cam.ac.uk <akw27@arcadians.cl.cam.ac.uk>
Thu, 26 May 2005 15:11:08 +0000 (15:11 +0000)
Make disconnect/destroy messages from xend to the backend drivers wait for
responses to allow backends to shut down the connection properly.

tools/python/xen/xend/server/blkif.py
tools/python/xen/xend/server/netif.py
tools/python/xen/xend/server/usbif.py

index 22253f25b6fa8c707a651d0760a4fb5b91d5ca97..5a179c23a029a019e6985d67352d9aac20653e5a 100755 (executable)
@@ -103,14 +103,16 @@ class BlkifBackend:
         msg = packMsg('blkif_be_disconnect_t',
                       { 'domid'        : self.frontendDomain,
                         'blkif_handle' : self.id })
-        self.backendChannel.writeRequest(msg)
+        self.backendChannel.requestResponse(msg)
+        #todo: check return status
         self.connected = False
 
     def send_be_destroy(self):
         msg = packMsg('blkif_be_destroy_t',
                       { 'domid'        : self.frontendDomain,
                         'blkif_handle' : self.id })
-        self.backendChannel.writeRequest(msg)
+        self.backendChannel.requestResponse(msg)
+        #todo: check return status
 
     def connectInterface(self, val):
         self.openEvtchn()
index 5e3d0d74469d8ff16c1a39ec1eac26bb7ff49784..9d2dbc4f63d438c9580131ac09902f3c6289488c 100755 (executable)
@@ -313,13 +313,15 @@ class NetDev(Dev):
         msg = packMsg('netif_be_disconnect_t',
                       { 'domid'        : self.frontendDomain,
                         'netif_handle' : self.vif })
-        return self.backendChannel.writeRequest(msg)
+        self.backendChannel.requestResponse(msg)
+        #todo: check return status
 
     def send_be_destroy(self, response=None):
         msg = packMsg('netif_be_destroy_t',
                       { 'domid'        : self.frontendDomain,
                         'netif_handle' : self.vif })
-        return self.backendChannel.writeRequest(msg)
+        self.backendChannel.requestResponse(msg)
+        #todo: check return status
     
     def recv_fe_interface_connect(self, val):
         self.openEvtchn()
index 0c1dd6f63822c435153746143d608f535a3a0adf..9535fdd2029d4ebf602c574c54c722f9784b74dd 100644 (file)
@@ -89,13 +89,14 @@ class UsbBackend:
         log.debug('>UsbifBackendController>send_be_disconnect> %s', str(self))
         msg = packMsg('usbif_be_disconnect_t',
                       { 'domid'        : self.frontendDomain })
-        self.backendChannel.writeRequest(msg)
+        self.backendChannel.requestResponse(msg)
 
     def send_be_destroy(self, response=None):
         log.debug('>UsbifBackendController>send_be_destroy> %s', str(self))
         msg = packMsg('usbif_be_destroy_t',
                       { 'domid'        : self.frontendDomain })
-        self.backendChannel.writeRequest(msg, response=response)
+        self.backendChannel.requestResponse(msg)
+        #todo: check return status
 
     
     def connectInterface(self, val):